# -*- coding: utf-8 -*-
"""
Created on Wed Oct 11 21:57:41 2023

@author: LENOVO
"""
import numpy as np
import matplotlib.pyplot as plt

data = np.load('populations.npz', allow_pickle=True)

plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False

name = data['feature_names'] 
values = data['data'][0:-2, :]
label1 = ['男性', '女性'] 
label2 = ['城镇', '乡村']

for i in range(20):
    values[i, 0] = values[i, 0].replace("年", "")

values = values[values[:, 0].argsort()]

ex = [0.01, 0.01] 

#1.折线图
p1 = plt.figure(figsize=(10, 15))

a2 = p1.add_subplot(311) 
plt.plot(values[:, 0], values[:, 1], color='orange', marker='o', linestyle='--')
for i in range(20):
    plt.annotate(int(values[i, 1]), xy=(values[i, 0], values[i, 1]),
                 xytext=(int(values[i, 0]) + 1, int(values[i, 1])))
plt.ylabel('人口（万）')
plt.legend(['中国人口数'])
plt.title('1996~2015年末与各类人口折线图')

b2 = p1.add_subplot(312) 
plt.plot(values[:, 0], values[:, 2], marker='s', color='blue', linestyle='--')
plt.plot(values[:, 0], values[:, 3], marker='o', color='red', linestyle='--')
plt.xlabel('时间（年）')
plt.ylabel('人口（万）')
plt.xticks(rotation=45) 
plt.legend(['男性', '女性'])

c2= p1.add_subplot(313)
plt.plot(values[:, 0], values[:, 4], marker='^', color='black', linestyle='--')
plt.plot(values[:, 0], values[:, 5], marker='D', color='green', linestyle='--')
plt.xlabel('时间（年）')
plt.ylabel('人口（万）')
plt.xticks(rotation=45)
plt.legend(['城镇', '乡村'])
plt.subplots_adjust(hspace=0, wspace=0)

# 2.饼图
p2 = plt.figure(figsize=(8, 8))

a4 = p2.add_subplot(221)
plt.pie(values[0, 2:4], explode=ex, labels=label1,
        colors=['teal', 'khaki'], autopct='%1.1f%%',textprops={'color': 'black','fontsize': 15})
plt.title('1996年男、女人口数饼图')
plt.legend(loc='upper left')

b4 = p2.add_subplot(222)
plt.pie(values[19, 2:4], explode=ex, labels=label1,
        colors=['teal', 'khaki'], autopct='%1.1f%%',textprops={'color': 'black','fontsize': 15})
plt.title('2015年男、女人口数饼图')
plt.legend(loc='upper left')

c4 = p2.add_subplot(223)
plt.pie(values[0, 4:6], explode=ex, labels=label2,
        colors=['silver', 'olive'], autopct='%1.1f%%',textprops={'color': 'black','fontsize': 15})
plt.title('1996年城、乡人口数饼图')
plt.legend(loc='upper left')

d4 = p2.add_subplot(224)
plt.pie(values[19, 4:6], explode=ex, labels=label2,
        colors=['silver', 'olive'], autopct='%1.1f%%',textprops={'color': 'black','fontsize': 15})
plt.title('2015年城、乡人口数饼图')
plt.legend(loc='upper left')

# 3.箱线图
p3 = plt.figure(figsize=(8, 8))
plt.boxplot(values[0:20, 1:6], notch=True,
            labels=['总人口', '男性', '女性', '城镇', '乡村'], meanline=True)
plt.xlabel('类别')
plt.ylabel('人口（万人）')
plt.title('1996~2015年各特征人口箱线图')

plt.show()


